#include <iostream>
#include <unistd.h>
#include <string>
#include <vector>

#include "Thread.hpp"
// 设置线程名
std::string GetThreadName()
{
    static int num = 1;
    char buffer[64];
    snprintf(buffer, sizeof(buffer), "Thread-%d", num++);
    return buffer;
}

void Print(int num)
{
    while(num--)
    {
        std::cout << "hello thread num :" << num << std::endl;
        sleep(1);
    }
}

int main()
{
    Thread<int> t(GetThreadName(), Print, 5);
    t.Start();
    t.Join();

    // std::vector<Thread> threads;
    // int num = 5;
    // // 创建
    // for(int i = 0; i< num; i++)
    // {
    //     threads.push_back(Thread(GetThreadName(),Print));
    // }
    // for (auto &t : threads)
    // {
    //     std::cout << t.ThreadName() << ", is running: " << t.IsRunning() << std::endl;
    // }
    // // 启动
    // for (auto &t : threads)
    // {
    //     t.Start();
    // }

    // for (auto &t : threads)
    // {
    //     std::cout << t.ThreadName() << ", is running: " << t.IsRunning() << std::endl;
    // }
    // // Join
    // for (auto &t : threads)
    // {
    //     t.Join();
    // }
    // Thread ts(Printf, GetThreadName());
    // std::cout << "is thread running? " << ts.IsRunning() << std::endl;
    // ts.Start();
    // std::cout << "is thread running? " << ts.IsRunning() << std::endl;
    // ts.Join();
    return 0;
}